package cn.xiaoming.car.server;


import cn.xiaoming.car.pojo.order.pojo.entity.OrderTbl;
import cn.xiaoming.car.pojo.order.pojo.param.OrderTblParam;
import cn.xiaoming.car.pojo.order.pojo.param.OrderTblUpdateParam;
import cn.xiaoming.car.pojo.order.pojo.vo.OrderTblVo;
import cn.xiaoming.car.server.pojo.vo.PageData;
import org.springframework.web.bind.annotation.PathVariable;

public interface IOrderService {

    /**
     * redisKEY前缀   + 自己拼接uuid
     * */
    String ORDER_KEY_="ORDER_KEY_";

    /**
     * 初始默认状态，未支付订金=0
     */
    Integer INITIAL=0;
    /**
     * 已经支付订金，未支付尾款=1
     */
    Integer PAID_FIRST=1;
    /**
     * 已经支付尾款，未交车=2
     */
    Integer PAID_LAST=2;
    /**
     * 已经交车，未确定收车=3
     */
    Integer DEPARTED=3;
    /**
     * 确定收车=4
     */
    Integer RECEIVED=4;

    /**
     * 订单已完成=5
     */
    Integer COMPLETES=5;

    /**
     * 订单已经取消=6
     */
    Integer CANCELED=6;

    /**
     * 异常订单=7
     */
    Integer ERR=7;
    /**
     * 订单已过期=8
     */
    Integer EXPIRE=8;



    /**
     * 添加订单
     */
    void addNewOrder(Long carId, Long buyerId);

    /**
     * 根据ID删除订单
     */
    void deleteById(String id);

    /**
     * 根据id修改信息
     */
    void updateInfoById(Long userId, String orderId, String status);


    int selectPurchasedCountByCarId(Long carId, Long buyId);

    /**
     * 根据ID查询订单
     */
    PageData<OrderTblVo> selectListByUserId(Long id, Integer num,String type);

    /**
     * 查询订单列表
     */
    PageData<OrderTblVo> selectList(Integer pageNum);
    /**
     * 重写的可设置单页数据多少条
     */
    PageData<OrderTblVo> selectList(Integer pageNum, Integer pageSize);

    OrderTbl selectOrderById(String uuid);


    void updateOrderTbl(OrderTbl orderTbl);

    void updateInfo(OrderTblUpdateParam orderTblUpdateParam);
}
